Telegram Group »
United States »
Библиотека джависта | Java Spring Maven Hibernate » Telegram Webview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔹 OpenTelemetry и Kubernetes
Автор делится опытом миграции демо-приложения с Docker Compose на Helm в Kubernetes. Он описывает использование Helm subcharts для настройки инфраструктуры (Traefik, Jaeger, PostgreSQL) и приложений, а также демонстрирует изоляцию компонентов с помощью vCluster.
🔹 Тестирование Spring-контроллеров с MockMvcTester
Автор представляет MockMvcTester, новый инструмент в Spring Framework 6.2, который упрощает написание тестов контроллеров с использованием AssertJ-стиля. Он показывает, как интегрировать MockMvcTester в проекты на Spring Boot 3.4.0 и выше, и предоставляет примеры конфигурации для различных сценариев тестирования.
🔹 Создание надежного Docker-образа для Spring Boot-приложения
Автор рассматривает лучшие практики упаковки Spring Boot-приложений в Docker-образы. В статье обсуждаются методы диагностики сбоев, таких как OutOfMemoryError, с использованием heap dump и GC-логов, а также инструменты мониторинга, включая Spring Boot Actuator и Java Flight Recorder.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Java | тесты, код, задания
Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет выведено в консоль?
Anonymous Quiz
5%
Handler A processed request.
8%
Handler B processed request.
8%
Handler C processed request.
60%
Ничего
18%
Исключение
Java / Kotlin разработчик (Software Engineer) — до 450 000 ₽ — гибрид (Москва)
Java Backend Developer — от 1 500 до 3 000 ₽/час — удаленно
Java Developer — 180 000 — 300 000 ₽ — гибрид (Санкт-Петербург)
Senior Java Developer — 400 000 — 450 000 ₽ — гибрид (Москва)
Please open Telegram to view this post
VIEW IN TELEGRAM
Проблема: при создании индексов в Elasticsearch важно правильно настроить маппинг, чтобы обеспечить корректное хранение и поиск данных. Неправильная настройка маппинга может привести к неправильной индексации данных, ухудшению производительности и проблемам с поисковыми запросами.
Решение: в книге Elasticsearch in Action (Second Edition) автор предлагает пример настройки маппинга для индекса с типами данных и анализаторами, чтобы гарантировать правильную индексацию.
Пример кода для создания маппинга с типами данных и настройкой анализатора:
PUT /products
{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "standard"
},
"price": {
"type": "float"
},
"description": {
"type": "text",
"analyzer": "english"
},
"available": {
"type": "boolean"
}
}
}
}
Преимущества:
— Обеспечивает правильную индексацию данных.
— Ускоряет поиск и улучшает точность запросов.
— Позволяет гибко настроить обработку данных и анализ текстов.
Еще больше полезных книг — в нашем канале @progbook
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎯 Как настроить Spring Security с кастомной формой логина
Безопасность — базовая вещь. Spring Security по умолчанию кидает вас в дефолтную форму логина. Но в реальности — нужна своя, кастомная.
1️⃣ Добавьте зависимость
2️⃣ Создайте SecurityConfig
3️⃣ Создайте кастомную HTML-форму
src/main/resources/templates/login.html (если используете Thymeleaf):
4️⃣ Реализуете контроллер
🐸 Библиотека джависта #буст
Безопасность — базовая вещь. Spring Security по умолчанию кидает вас в дефолтную форму логина. Но в реальности — нужна своя, кастомная.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/login", "/css/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(form -> form
.loginPage("/login")
.defaultSuccessUrl("/dashboard", true)
.permitAll()
)
.logout(logout -> logout
.logoutSuccessUrl("/login?logout")
);
return http.build();
}
@Bean
public UserDetailsService userDetailsService() {
var user = User.withUsername("admin")
.password("{noop}admin123") // Для простоты, без шифрования
.roles("ADMIN")
.build();
return new InMemoryUserDetailsManager(user);
}
}
src/main/resources/templates/login.html (если используете Thymeleaf):
<!DOCTYPE html>
<html>
<head><title>Login</title></head>
<body>
<h2>Login</h2>
<form method="post" action="/login">
<label>Username: <input type="text" name="username" /></label><br/>
<label>Password: <input type="password" name="password" /></label><br/>
<button type="submit">Login</button>
</form>
</body>
</html>
@RestController
public class DashboardController {
@GetMapping("/dashboard")
public String dashboard() {
return "Welcome to the dashboard!";
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🥵 Устали от статей, где эйчары рассказывают, как на самом деле выглядит рынок труда в ИТ?
Мы тоже! Поэтому решили узнать правду и представить ее всем айтишникам — но нам нужен ваш голос. Опрос займет 3 минуты, а пользы — вагон для всего сообщества.
Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).
👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA
Мы тоже! Поэтому решили узнать правду и представить ее всем айтишникам — но нам нужен ваш голос. Опрос займет 3 минуты, а пользы — вагон для всего сообщества.
Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).
👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA
⚙️ Интеграция брокеров сообщений в Spring Boot с AI
Поработать с Kafka или RabbitMQ, но нет времени вникать в тонкости конфигурации и шаблонного кода? AI справится с этим за секунды — с учётом лучших практик и особенностей выбранного брокера.
📝 Промпт:
💡 Дополнительные возможности:
— Добавьте
— Настройте
🐸 Библиотека джависта #буст
Поработать с Kafka или RabbitMQ, но нет времени вникать в тонкости конфигурации и шаблонного кода? AI справится с этим за секунды — с учётом лучших практик и особенностей выбранного брокера.
📝 Промпт:
Generate a Spring Boot service that integrates with [Kafka/RabbitMQ] to handle asynchronous message processing for [описание бизнес-задачи].
Include configuration, producer, and consumer code.
Ensure reliability with retry mechanisms, message acknowledgment, and error handling.
Use Spring Cloud Stream or native client APIs. Explain architectural choices and trade-offs.
— Добавьте
Dead Letter Queue (DLQ)
для обработки неуспешных сообщений— Настройте
observability (Micrometer + Prometheus/Grafana)
для мониторинга очередейPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Работаете в большом Java-проекте и боитесь, что при переименовании метода или переменной что-то сломаете? IntelliJ IDEA умеет безопасно и быстро переименовывать элементы кода с помощью Shift + F6.
🔹 Зачем это нужно
— Вместо ручного поиска и замены по всему проекту IDEA обновит все ссылки на метод, переменную или класс автоматически.
— Переименование учитывает контекст — не затронет одноимённые элементы в других частях кода.
— Работает со всеми элементами: методами, классами, переменными, параметрами и даже с ресурсами.
🔹 Как использовать
— Наведите курсор на имя метода, класса или переменной, которую хотите переименовать.
— Нажмите Shift + F6.
— Введите новое имя. IDEA покажет, где будет произведено переименование.
— Подтвердите и все ссылки обновятся мгновенно.
Очень удобно, когда нужно быстро рефакторить код, не опасаясь сломать логику, особенно в крупных проектах с множеством взаимосвязей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌐 Ключевые возможности HTTP/2
⠀
HTTP/2 — современный протокол передачи данных, который значительно улучшает работу веб-приложений по сравнению с HTTP/1.1.
В карточках собраны важнейшие функции HTTP/2, которые помогают:
⚡️ Повысить скорость загрузки страниц и отклика серверов
⚡️ Оптимизировать параллельную передачу данных
⚡️ Снизить сетевые задержки и нагрузку
⠀
🔗 Подробнее — в полной статье
🐸 Библиотека джависта #буст
⠀
HTTP/2 — современный протокол передачи данных, который значительно улучшает работу веб-приложений по сравнению с HTTP/1.1.
В карточках собраны важнейшие функции HTTP/2, которые помогают:
⚡️ Повысить скорость загрузки страниц и отклика серверов
⚡️ Оптимизировать параллельную передачу данных
⚡️ Снизить сетевые задержки и нагрузку
⠀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM